package cn.doitedu.day03.oo

class Student {

  val name = "tom"

  var age = 10

  //私有的，将money的变量保护起来了,
  //在类的内部，或其伴生对象中可以访问
  private var money = 1000.0

  private[this] val pet = "jerry"

  def printMoney(): Unit = {
    println(money)
  }

  def getPetName(): String = {
    pet
  }

  def getStaticProps(): Unit = {
    println(Student.count)
    println(Student.aaa)
    //println(Student.bbb)
  }



}

//普通静态对象
//在scala中，所说的对象，指的是小写的object
//在scala中，new 出来的类加一个实例
object TestStudent {

  def main(args: Array[String]): Unit = {

    val s = new Student()
    println(s.name)
    println(s.age)

    //修改值
    //s.name = "tomcat"  //val修饰的变量，不能改变
    s.age = 11
    println(s.age)

  }

}


/**
 * 伴生对象，与类名相同，并且在同一个文件中
 *
 * 伴生对象可以访问类中用private修饰的属性和方法
 *
 */
object Student {

  var count = 100
  private var aaa = "AAA"
  private[this] var bbb = "BBB"



  def main(args: Array[String]): Unit = {

    val s = new Student
    //在伴生对象中，可以访问用private修饰的属性或方法
    println(s.money)

    //在伴生对象中没法访问用private[this修饰的方法]

  }


}

